package cn.edu.tust.myUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MyUtils {

	/**
	 * 获取指定类型的实例对象[工厂模式]
	 * 
	 * @param clazz
	 *            指定类类型
	 * @return 创建的实例对象
	 */
	public static <T> T getNewInstance(Class<T> clazz) {
		// 使用反射获取指定类的实例对象
		T t = null;
		try {
			t = clazz.newInstance();
		} catch (Exception e) {
			// 异常处理
			System.out.println("获取指定类型的实例对象异常：" + e.getMessage());
			e.printStackTrace();
		}
		return t;

	}

	/**
	 * 将字符串转换为日期类型
	 * 
	 * @param strDate
	 *            被转换的字符串
	 * @param strFormat
	 *            字符串的格式
	 * @return 转换之后的日期对象
	 */
	public static Date convertString2Date(String strDate, String strFormat) {
		// 返回值
		Date date = null;
		// 如果转换的时间串为空则返回null
		if (strDate != null && !strDate.equals("")) {
			// 判定格式串是否为空
			if (strFormat == null || strFormat.equals("")) {
				strFormat = "yyyy-MM-dd HH:mm:ss";
			} else {
				try {
					// 进行日期转换操作
					// 创建日期转换类的实例对象
					SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
					// 将字符串转换为日期格式
					date = sdf.parse(strDate);
				} catch (ParseException e) {
					// 异常处理
					System.out.println("字符串转换为日期对象异常：" + e.getMessage());
					e.printStackTrace();
				}
			}

		}
		return date;
	}

	/**
	 * 将日期类型换为字符串转
	 * 
	 * @param date
	 *            被转换的日期类型
	 * @param strFormat
	 *            字符串的格式
	 * @return 转换之后的日期字符串
	 */
	public static String convertDate2String(Date date, String strFormat) {
		// 如果被转化的日期对象为null，则使用当前时间
		if (date == null) {
			date = new Date();
		}

		// 判定格式串是否为空
		if (strFormat == null || strFormat.equals("")) {
			strFormat = "yyyy-MM-dd HH:mm:ss";
		}

		// 返回的转换之后的字符串
		String strDate = "";
		// 进行日期转换操作
		// 创建日期转换类的实例对象
		SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
		// 将字符串转换为日期格式
		strDate = sdf.format(date);

		return strDate;
	}

}
